#include <iostream>
#include <sstream>
#include <fstream>
#include "logger.hpp"
namespace bite_im
{
    class Filer
    {
    public:
        static bool readFile(const std::string &file_name, std::string &body)
        {
            std::ifstream ifs(file_name, std::ios::binary | std::ios::in);
            if (ifs.is_open() == false)
            {
                LOG_ERROR("打开文件{}失败", file_name);
                return false;
            }
            ifs.seekg(0, std::ios::end);    // 跳转到文件末尾
            size_t data_size = ifs.tellg(); // 获取数据长度
            ifs.seekg(0, std::ios::beg);    // 跳转回文件开始
            body.resize(data_size); 
            ifs.read(&body[0], data_size);
            if(ifs.good() == false)
            {
                LOG_ERROR("读取文件{}失败", file_name);
                ifs.close();
                return false;                
            }
            ifs.close();
            return true;
        }
        static bool writeFile(const std::string &file_name, const std::string &body)
        {
            std::ofstream ofs(file_name, std::ios::out | std::ios::binary | std::ios::trunc);
            if (ofs.is_open() == false)
            {
                LOG_ERROR("打开文件{}失败", file_name);
                return false;
            }
            ofs.write(body.c_str(), body.size());
            if(ofs.good() == false)
            {
                LOG_ERROR("写入文件{}失败", file_name);
                ofs.close();
                return false;                
            }
            ofs.close();
            return true;
        }
    };

}
